﻿using System;
using System.IO;

namespace SpiderStudy.Utils.Currency.FileUtils
{
    internal class FileNameHelper
    {
        /// <summary>
        /// 创建一个不重复的文件名，用filetime生成，如 黑猫.jpg→黑猫1002252256.jpg
        /// </summary>
        /// <param name="FilePath"></param>
        /// <returns></returns>
        public string CreateRandomFileName(string FilePath)
        {
            return CreateFileNameAddTip(FilePath, DateTime.Now.ToFileTime().ToString());
        }

        /// <summary>
        /// 文件文件名增加后缀,如 黑猫.jpg→黑猫TIP.jpg
        /// </summary>
        /// <param name="FilePath"></param>
        /// <param name="Tip"></param>
        /// <returns></returns>
        public string CreateFileNameAddTip(string FilePath, string Tip)
        {
            return FloderHelper.GetFloderPath(FilePath) + GetFileNameWithoutExtension(FilePath) + TextHelper.ReplaceBadChar(Tip) + GetFileType(FilePath);
        }

        /// <summary>
        /// 创建一个和指定文件名相同，文件类型不同的文件名 如123.jpg→123.xml
        /// </summary>
        /// <param name="FilePath"></param>
        /// <param name="FileExtension">新的文件类型，带.</param>
        /// <returns></returns>
        public string CreateFileNameWithExtension(string FilePath, String FileExtension)
        {
            return FilePath.Replace(GetFileType(FilePath), FileExtension);
        }

        /// <summary>
        ///  创建随机不重复文件名，需要文件类型，如（.jpg） 可以添加额外标识 tip
        /// </summary>
        /// <param name="FloderPath"></param>
        /// <param name="FileType"></param>
        /// <param name="Tip">额外文件名标识，默认为空</param>
        /// <returns></returns>
        public string CreateRandomFileName(string FloderPath, string FileType, string Tip = "")
        {
            if (!FileHelper.FileExits(FloderPath))
                FloderHelper.FolderCreate(FloderPath);
            return FloderPath + Tip + DateTime.Now.ToFileTime() + FileType;
        }

        /// <summary>
        /// 获取文件名 不带路径
        /// </summary>
        /// <param name="FilePath"></param>
        /// <param name="Pattern"></param>
        /// <returns></returns>
        public string GetFileName(String FilePath)
        {
            String FileName = "";
            try
            {
                FileName = Path.GetFileName(FilePath);
            }
            catch (Exception ex)
            {
                PrintLog.Log("当前是没有任何文件需要下载的情况，文件夹没有创建。");
                PrintLog.Log(ex);
            }
            return FileName;
        }

        /// <summary>
        /// 获取文件的扩展名
        /// </summary>
        /// <param name="FilePath"></param>
        /// <param name="Pattern"></param>
        /// <returns></returns>
        public string GetFileType(String FilePath)
        {
            String FileName = "";
            try
            {
                FileName = Path.GetExtension(FilePath);
            }
            catch (Exception ex)
            {
                PrintLog.Log("当前是没有任何文件需要下载的情况，文件夹没有创建。");
                PrintLog.Log(ex);
            }
            return FileName;
        }

        /// <summary>
        /// 获取文件名 不带路径 不带文件后缀
        /// </summary>
        /// <param name="FilePath"></param>
        /// <param name="Pattern"></param>
        /// <returns></returns>
        public string GetFileNameWithoutExtension(String FilePath)
        {
            String FileName = "";

            try
            {
                FileName = Path.GetFileNameWithoutExtension(FilePath);
            }
            catch (Exception ex)
            {
                PrintLog.Log("当前是没有任何文件需要下载的情况，文件夹没有创建。");
                PrintLog.Log(ex);
            }
            return FileName;
        }
    }
}